<!DOCTYPE html>
<html lang="ko">
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<title>jscript03객체</title>
	</head>

	<body>
		<h1>jscript03 객체</h1><hr />
		<h3>모든 것은 객체다</h3>
		<p>자바스크립트에서 대부분은 객체로 취급가능</p>
		<p>블리언, 숫자, 문자, 날짜, 수학, 정규식, 배열, 심지어 함수까지도 객체로 생각할 수 있음</p>
		<p>객체는 특별한 종류의 자료를 가짐 : 속성, 메서드</p>
		<p>속성 : 객체명.속성명</p>
		<p>메서드 : 객체명.메서드명</p>
		<script type="text/javascript">
			var name = "수지는 최고다!";
			document.write(name.length);	//속성
			name = "suji is the best lady!";
			document.write(name.toUpperCase());	//메서드
		</script>
		<hr />
		
		<h3>사용자가 만드는 객체</h3>
		<p>바로 개체를 정의해서 객체로 생성하거나</p>
		<p>함수를 이용해서 객체를 만들 수 있음</p>
		<script type="text/javascript">
			var sungjuk = new Object();
				sungjuk.name = "수지";
				sungjuk.kor = 99;
				sungjuk.eng = 97;
				sungjuk.mat = 94;
			
			sungjuk2 = {name: "수진", kor: 99, eng: 98, mat: 93};	//추천!!
			
			function sungjuk3(name, kor, eng, mat){
				this.name = name;
				this.kor = kor;
				this.eng = eng;
				this.mat = mat;
			}
			var sj1 = new sungjuk3("소은", 98, 99, 94);
			var sj2 = new sungjuk3("소율", 98, 99, 94);
			
			document.write(sungjuk.name);
			document.write(sungjuk2.name);
			document.write(sj1.name);			
			document.write(sj2.name);			
		</script>
		<hr />
		
		<h3>객체의 내용 출력</h3>
		<p>객체명.속성명으로 하나씩 출력할 수 있고</p>
		<p>for 문을 이용해서 간편하게 출력할 수도 있음</p>
		<script type="text/javascript">
			for(x in sungjuk){
				document.write(x + "/");	// 속성명
				document.write(sungjuk[x] + ",");	// 값
				//document.write(sungjuk.x + ",");	// 불가능
			}
		</script>
		<hr />
		
		<h3>객체의 메서드 정의</h3>
		<p>객체 정의시 메서드 이름과 함께 익명함수로 메서드를 정의함</p>
		<script type="text/javascript">
			var sungjuk4 = {kor: 98, eng: 99, mat: 96,
							getTot: function(){return this.kor+this.eng+this.mat;},
							getAvg: function(){return this.getTot()/3;},
							getGrd: function(){var grd = '';
										switch(parseInt(this.getAvg()/10)){
											case 10: case 9:
												grd = "수"; break;
											case 8:
												grd = "우"; break;
											case 7:
												grd = "미"; break;
											case 6:
												grd = "양"; break;
											default:
												grd = "가"; break;
										} return grd;
									}
							};
			document.write(sungjuk4.getTot() + "<br />");
			document.write(sungjuk4.getAvg() + "<br />");
			document.write(sungjuk4.getGrd());
		</script>
		
		
	</body>
</html>
